//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: BSPTimer.h
//创建人  	: Handry
//创建日期	:
//描述	    : 软定时器头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef _BSPTIMER_H
#define _BSPTIMER_H

//=============================================================================================
//头文件
//=============================================================================================
#include "BSPTypeDef.h"

//=============================================================================================
//宏参数设定
//=============================================================================================
#define 	TIMER_MAX_NUM 		20				//最大定时器个数

//=============================================================================================
//定义数据类型
//=============================================================================================
typedef 	void (*t_TIMER_CB)(u8 id);		//定时器回调函数

typedef struct
{

    u32 period;			//0--one short
    u32 delay;			//0--not use
    t_TIMER_CB callback;
    u8 use;				//0--not use 1--use
    u8 timeup;
}t_TIMER;		//软定时器结构体

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================
extern u32 	gTimer1ms;			//全局定时器计数变量

//=============================================================================================
//声明接口函数
//=============================================================================================

//=============================================================================================
//函数名称	: u8 BSPTimerAllocation(u8* id)
//输入参数	: id:软定时器id
//输出参数	: 1:分配软定时器id  错误；0：分配软定时器id正确
//函数功能	: 分配软定时器id
//注意事项	: 分配软定时器id并对其进行初始化
//=============================================================================================
u8 BSPTimerAllocation(u8* id);

//=============================================================================================
//函数名称	: u8 BSPTimerConfig(u8 id, u32 delay, u32 period, t_TIMER_CB callback)
//输入参数	: id:软定时器id delay:延时时间	period:软定时器周期	callback:软定时器回调函数
//输出参数	: 1:配置软定时器错误；0：配置软定时器正确
//函数功能	: 配置软定时器
//注意事项	:
//=============================================================================================
u8 BSPTimerConfig(u8 id, u32 delay, u32 period, t_TIMER_CB callback);

//=============================================================================================
//函数名称	: u8 BSPTimerCheck(u8 id)
//输入参数	: id:软定时器id
//输出参数	: 1：延时完毕；0：还在延时过程中
//函数功能	: 检查软定时器是否延时完毕
//注意事项	:
//=============================================================================================
u8 BSPTimerCheck(u8 id);

//=============================================================================================
//函数名称	: u8 BSPTimerRelease(u8 id)
//输入参数	: id:软定时器id
//输出参数	: 1:释放软定时器错误；0：释放软定时器正确
//函数功能	: 释放软定时器
//注意事项	:
//=============================================================================================
u8 BSPTimerRelease(u8 id);

//=============================================================================================
//函数名称	: void BSPTimerTickHandler(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 软定时器周期处理函数
//注意事项	: 放在定时器2的中断回调函数中调用
//=============================================================================================
void BSPTimerTickHandler(void);

#endif

/*****************************************end of BSPTimer.c*****************************************/
